অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) একটি শক্তিশালী জাভা লাইব্রেরি যা জাভা প্রোগ্রামে উন্নত ডেটা স্ট্রাকচার এবং ইউটিলিটি সরবরাহ করে। এর মধ্যে Bounded Collections ব্যবহারের মাধ্যমে আপনি কালেকশনগুলোতে উপাদানের সংখ্যা নির্ধারণ করতে পারেন, অর্থাৎ একটি নির্দিষ্ট সীমা (boundary) পর্যন্ত উপাদান রাখতে পারবেন। এটি বিশেষভাবে উপকারী যখন আপনি একটি কালেকশনের আকার সীমাবদ্ধ করতে চান বা এর আকারের উপর কিছু নিয়ন্ত্রণ রাখতে চান।
Bounded Collections সাধারণত Queue, List, অথবা Set এর মতো ডেটা স্ট্রাকচারে ব্যবহৃত হয়, যেখানে আপনি চাইবেন যে কালেকশনটি নির্দিষ্ট আকারের বেশি না হয়ে যায়। অ্যাপাচি কমন্স কালেকশনসে Bounded Collection ক্লাস যেমন BoundedList, BoundedSet, BoundedQueue ইত্যাদি অন্তর্ভুক্ত রয়েছে।
BoundedList একটি List টাইপের কালেকশন যা একটি নির্দিষ্ট আকার পর্যন্ত উপাদান ধারণ করতে পারে। যখন এই লিস্টে উপাদানের সংখ্যা পূর্ণ হয়ে যায়, নতুন উপাদান যুক্ত করার সময় এটি পুরনো উপাদান সরিয়ে ফেলে।
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.collection.GrowingList;
import java.util.List;
public class BoundedListExample {
public static void main(String[] args) {
// Create a Bounded List with a limit of 3 elements
List<String> list = ListUtils.predicatedList(new GrowingList<String>(3), input -> true);
// Add elements to the list
list.add("apple");
list.add("banana");
list.add("orange");
// The list is full, so adding another element will remove the first element (apple)
list.add("grape");
// Print the elements of the list
System.out.println(list); // Output: [banana, orange, grape]
}
}
এখানে, GrowingList ব্যবহার করা হয়েছে যা ৩টি উপাদান ধারণ করতে পারে। যখন ৩টি উপাদান যোগ করা হয়েছে, তখন নতুন উপাদান "grape" যুক্ত করার জন্য পুরনো উপাদান "apple" সরিয়ে ফেলা হয়েছে।
BoundedQueue একটি কিউ (Queue) টাইপের কালেকশন যা একটি নির্দিষ্ট সীমায় উপাদান ধারণ করতে পারে। এটি FIFO (First-In-First-Out) নিয়মে কাজ করে এবং যখন কিউটি পূর্ণ হয়ে যায়, নতুন উপাদান যুক্ত করার সময় পুরনো উপাদান সরিয়ে ফেলা হয়।
import org.apache.commons.collections4.queue.CircularFifoQueue;
import java.util.Queue;
public class BoundedQueueExample {
public static void main(String[] args) {
// Create a Bounded Queue with a limit of 3 elements
Queue<String> queue = new CircularFifoQueue<>(3);
// Add elements to the queue
queue.add("apple");
queue.add("banana");
queue.add("orange");
// The queue is full, so adding another element will remove the first element (apple)
queue.add("grape");
// Print the elements of the queue
System.out.println(queue); // Output: [banana, orange, grape]
}
}
এখানে CircularFifoQueue ব্যবহার করা হয়েছে, যা FIFO নিয়মে কাজ করে এবং একটি নির্দিষ্ট সীমায় উপাদান ধারণ করে। apple উপাদানটি কিউ থেকে সরিয়ে ফেলেছে grape যোগ করার সময়।
BoundedSet একটি Set টাইপের কালেকশন যা একটি নির্দিষ্ট সীমায় উপাদান ধারণ করতে পারে এবং নতুন উপাদান যোগ করার সময় সেটি পুরনো উপাদান সরিয়ে ফেলে। সাধারণত, এটি ব্যবহৃত হয় যখন আপনি অনন্য উপাদান রাখতে চান এবং তাদের সংখ্যা সীমিত করতে চান।
import org.apache.commons.collections4.SetUtils;
import org.apache.commons.collections4.set.LazySet;
import java.util.Set;
public class BoundedSetExample {
public static void main(String[] args) {
// Create a Bounded Set with a limit of 3 elements
Set<String> set = SetUtils.predicatedSet(new LazySet<String>(), input -> true);
// Add elements to the set
set.add("apple");
set.add("banana");
set.add("orange");
// The set is full, so adding another element will remove the first element (apple)
set.add("grape");
// Print the elements of the set
System.out.println(set); // Output: [banana, orange, grape]
}
}
এখানে, LazySet ব্যবহার করা হয়েছে, যা একটি সেটের মাধ্যমে একে অপরের সাথে সম্পর্কিত উপাদান রাখে এবং সীমিত আকারে ম্যানেজ করা হয়।
Bounded Collections হল এমন একটি কালেকশন যা নির্দিষ্ট সীমায় উপাদান ধারণ করতে সক্ষম এবং নতুন উপাদান যোগ করার সময় পুরনো উপাদানগুলো সরিয়ে ফেলে। অ্যাপাচি কমন্স কালেকশনস লাইব্রেরিতে BoundedQueue, BoundedList, এবং BoundedSet এর মতো বিভিন্ন ধরনের বাউন্ডেড কালেকশন রয়েছে, যা FIFO বা অন্যান্য নিয়মে কাজ করে এবং ডেটা স্ট্রাকচারের আকার নিয়ন্ত্রণ করতে সাহায্য করে। Bounded Collections ব্যবহারের মাধ্যমে আপনি ডেটা সংগ্রহের আকার সীমাবদ্ধ করতে পারেন, মেমরি ব্যবস্থাপনা করতে পারেন, এবং দ্রুত এবং কার্যকরী ডেটা প্রসেসিং নিশ্চিত করতে পারেন।
common.read_more